package gameAppLayer.enums;

import com.jme3.math.Vector3f;

public final class Constants {
	
	//Common directory paths
	//Game assets
	public static final String rootDir = "E://Documents and Settings//RJ//workspace//Divergent States//src";
	public static final String assetPath = rootDir + "//assets";

//	public static final String rootDir = "C://Documents and Settings//rmeyers//workspace//Divergent States//src";
//	public static final String assetPath = rootDir + "//assets";
	
	public static final String dataPath = assetPath + "//Data";
	public static final String interfacePath = assetPath + "//Interface";
	public static final String fontPath = assetPath + "//Interface//Fonts";
	public static final String matDefPath = "/assets/MatDefs/";
	public static final String materialsPath = "/assets/Materials/";
	public static final String modelsPath = "/assets/Models/";
	public static final String scenesPath = assetPath + "//Scenes";
	public static final String shadersPath = assetPath + "//Shaders";
	public static final String audioPath = "assets/Audio/";
	//public static final String texturesPath = assetPath + "//Textures";
	public static final String texturesPath = "assets/Textures/";
	public static final String testPath = assetPath + "//Test";
	
	//JME paths
	public static final String litMaterial = "Common/MatDefs/Light/Lighting.j3md";
	public static final String unshadedMaterial = "Common/MatDefs/Misc/Unshaded.j3md";
	
	
	
	
	
	
	//Game parameters
	public static final float hexSideLength = (float) (1/Math.sqrt(3)); //length of one side of hexgrid element
	public static final float hexXVal = 0.5f; //offset for creating vertices in a hex element
	public static final float hexYVal = hexSideLength; //offset for creating vertices in a hex element
	
	public static final Vector3f upDir = new Vector3f(0,0,1); //+z direction (out of screen, toward viewer)
	
	
	//Sun characteristics
	public static final double SunRadiusMeters = 6.955*1000*100000; //radius in m
	public static final double SunRadiusKilometers = 6.955*100000; //radius in km	
	public static final double SunLumWatts = 3.839*Math.pow(10, 26); //W	
	public static final double SunMassKg = 1.98892*Math.pow(10, 30); //kg	
	public static final double SunTempK = 5777; //K
	
	
	//Earth characteristics
	public static final double EarthGravity = 9.80665; //m/s2
	
	
	
	
	//Jupiter characteristics
	
	
	
	
	//Unit conversions
	public static final double AUtoKm = 149598000.0; //km in 1 AU
	public static final double KmToAU = 6.68458134*Math.pow(10, -9);
	public static final double MtoKm = 0.001;
	
	
	
	//universal constants
	public static final double BoltzmannConstant = 5.6704*Math.pow(10, -8); //(W/m2/K4)
	public static final double GravitationalConstant = 6.67428*Math.pow(10,-11); //m3/kg/s2
	public static final double AgeOfUniverse = 13.5*Math.pow(10, 9); //yrs
	public static final double SpeedOfLight = 3*Math.pow(10, 8); // m/s
	public static final double MagneticPermeability = 4*Math.PI*Math.pow(10, -7); //N/A2
	
	//Star system parameters
	//-----------------------------------------------
	//habitable orbits
	public static final double MinHabOrbitAU = 0.05;
	public static final double MaxHabOrbitAU = 100;
	public static final double MinHabOrbitKm = MinHabOrbitAU*Constants.AUtoKm;
	public static final double MaxHabOrbitKm = MaxHabOrbitAU*Constants.AUtoKm;
	
	//binary star separations
	public static final double MinBinarySepAU = 3;
	public static final double MaxBinarySepAU = 150;
	public static final double MinBinarySepKm = MinBinarySepAU*AUtoKm;
	public static final double MaxBinarySepKm = MaxBinarySepAU*AUtoKm;
	
	//habitable object dead zone orbits in multiple star systems
	public static final double MinBinaryDeadZoneAU = 3;
	public static final double MaxBinaryDeadZoneAU = 30;
	public static final double MinBinaryDeadZoneKm = MinBinaryDeadZoneAU*AUtoKm;
	public static final double MaxBinaryDeadZoneKm = MaxBinaryDeadZoneAU*AUtoKm;
	
	
	

}
